iT邦幫忙

2025 iThome 鐵人賽

DAY 0
0
自我挑戰組

Leetcode30天挑戰系列 第 3

Day3-Binary Tree Level Order Traversal

  • 分享至 

  • xImage
  •  

今天的題目為102.Binary Tree Level Order Traversal,他再叫我們寫出一段程式碼,並且層級地遍歷一棵二元樹,然後把每一層的節點值分開儲存
以下為程式碼以及解說:

class Solution {
        public List<List<Integer>> levelOrder(TreeNode root) { 
        List<List<Integer>> result = new ArrayList<>(); 
        //這是用來儲存每一層的節點值
        if (root == null) return result; 
        //如果樹根是空的則回傳result

        Queue<TreeNode> queue = new LinkedList<>(); 
        queue.offer(root);
        //使用佇列來儲存每一層的節點,從根節點開始
        
        while (!queue.isEmpty()) {
            int levelSize = queue.size(); // 當前層的節點數量
            List<Integer> level = new ArrayList<>();

            for (int i = 0; i < levelSize; i++) {
            TreeNode node = queue.poll(); // 取出節點
            level.add(node.val);          // 加入該層的結果

            if (node.left != null) queue.offer(node.left);   // 加入左子節點
            if (node.right != null) queue.offer(node.right); // 加入右子節點
        }

        result.add(level); // 加入整層結果
}

        return result; //回傳最後結果
    }
}

上一篇
Day2-Symmetric Tree
系列文
Leetcode30天挑戰3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言